Г Л А В А 8

LDBF API (S-Lang - реализация)


Данная глава содержит описание интерфейса к серверу, который реализован на языке S-Lang. Данные функции могут быть использованы при написании процедур базы данных. Язык S-Lang является интерпретируемым языком очень похожим на язык Си.

Функции по обработке дат и времени

Синтаксис:

void ldbfSetDateFormat(string picture)

Устанавливает формат вывода/ввода полей типа Date. В 'picture' указывается маска типа "DD/MM/YY".

Синтаксис:

string ldbfLong2Date(integer jullian_date)

Дата из длинного целого julian_day конвертируется в строку date в формате CCYYMMDD (век,год,месяц,день). Данный формат принят в среде xBase, именно так хранится дата в поле типа Date в файле DBF. Эта функция является противоположной ldbfdate().

См. также:ldbfdate()

Синтаксис:

integer ldbfDay()

Возвращает день из даты, которая расположена в переменной date в формате CCYYMMDD. Если дата пустая, возвращается 0.


Синтаксис:

integer ldbfDOW()

Возвращает день недели.

Значения дня недели:

 
  Воскресение   1  
  Понедельник   2 
  Вторник       3 
  Среда         4 
  Четверг       5 
  Пятница       6 
  Субота        7  

Синтаксис:

string ldbfDateFormat(string date,string picture)

Возвращает дату, которая преобразована из строки 'date', записанной в формате CCYYMMDD, используя маску 'picture'. В маске может находится любое сочетание специальных символов: CC - век, YY - год, MM - месяц, DD - день.

Если указано более чем два символа 'M', значение месяца будет возвращено в виде слова (английское название месяца).

Пример:

ldbfLog(ldbfDateFormat("19901002", "YY.MM.DD"));

/* возвращает "90.10.02" */

Синтаксис:

string ldbfDateInit(string value,string picture)

перед занесением в поле записи.Функция ldbfDateInit() является противоположностью функции ldbfDateFormat(). Если какая-точасть даты в переменной 'value' опущена, это значение будет взято из даты 1 января 1980 года.

Пример:

ldbfLog(ldbfDateInit( "Oct 07/90", "MMMDD/YY" )) ;

/* возвращает "19901007" */

Синтаксис:

integer ldbfDate2Long(string date)

Данная функция переводит строку даты из формата хBase в дату представленную длиным целым числом.

Пример:

variable date,julian_day;

date = "19901031";

julian_day = ldbfDate2Long( date );

Синтаксис:

integer ldbfMonth(string date)

Возвращается месяц из датыв виде числа от 1 до 12.

Синтаксис:

string ldbfTimeNow()

Данная функция возвращает текущее время в формате

'HH:MM:SS', что означает:

 
 'HH'  - часы между 0 и 24; 
 'MM'  - минуты между 0 и 59; 
 'SS'  - секунды между 0 и 59. 
 

Заметим, что '24:00:00' есть тоже самое, что и '00:00:00'. Разница только в том, что '24:00:00' означает конец суток, а '00:00:00' - начало.

Синтаксис:

string ldbfToday()

Возвращает текущую дату в формате CCYYMMDD.

Переменные LDBF



Данная переменная хранит код ошибки последней операции.0 означает, что ошибки нет.

Синтаксис:

string ldbfParamStr

В данной переменной хранится строка параметров, переданнаяпри вызове процедуры с помощью функции ldbfCall.

Пример:

  if(not(strcmp(ldbfParamStr,"create"))) { 
   ldbfCreate("new","name(c:20);no(n:5)","name(name);no(no:no>1);"); 
     ... 
   } 

Вспомогательные функции

Синтаксис:

string ldbfUserName()

По умолчанию в UNIX системах клиент LDBF автоматически использует имя пользователя для соединения к серверу. С помощью этойфункции Вы можете узнать имя пользователя, которое было передано серверу при соединении.

Синтаксис:

void ldbfPort(integer newport)

Данная функция устанавливает TCP порт, на котором сервер ожидает соединения с клиентом. По умолчанию используется порт 7979.

Пример:

   ldbfPort(2358); 
   if(ldbfConnect("host") > 0) { 
     ... 
    } else ldbfLog("Cannot connect torn host");

Синтаксис:

void ldbfShutDown()

Закрывает соединение с сервером.

Синтаксис:

integer ldbfConnect(string host)

Данная функция создает соединение с сервером.В качестве параметра выступает имя хоста, на котором запущен сервер LDBF. В случае, когда 'host' равен 0, используется локальнаямашина. Если система поддерживает Unix Domain протокол, связь на локальной машине будет осуществляться по этому протоколу. ldbfConnect() возвращает номер соединения, который впоследствии будет использоваться многими функциями. Если произошла какая-нибудь ошибка, возвратится -1 и в переменную ldbf_errno будет занесен код ошибки. Если скрипт выполняется с помощью програмы ldbfdcgi, то параметр игнорируется,в данном случае необходимо использовать функцию ldbfServerID. При указании нулевого значения, используется стандартное значение.

Пример:

   if(ldbfConnect("host")) { 
     ... 
    } 
   В случае ldbfdcgi: 

   ldbfServerID(876);
if(ldbfConnect(0)) { ... }

Синтаксис:

void ldbfCreateAliasDef(string alias,string pathname)

Cоздает алиас для вновь созданной таблицы. Для того, чтобы создать новую таблицу и чтобы ее могли использовать другие пользователи, необходимо описать новую таблицу в системе с помощью функции ldbfCreateAliasDef(). Для выполнения этой функции нужно иметь права на создание таблиц (параметер create_allow в файле ldbf.conf), т. к. описание нового алиаса добавляется в ldbf.conf.

Синтаксис:

void ldbfExchange(string alias,string path)

Данная функция реализует способность сервера на ходу подменять файлы данных. Вы можете не прерывая работы сервера и клиентов заменить файл данных любой таблицы на любой другой файл DBF. Идентичность структур необязательна, все зависит от базы данных и прикладных программ. При выполнении данной команды, сервер переоткрывает новый файл DBF с тем же алиасом. Если какие-либо клиенты уже открыли эту таблицу, они продолжат работу ничего не заметив.Описание нового файла данных записывается в ldbf.conf вместо старого. Если кто-то выполнял в это время транзакцию с этим файлом, результаты будут потеряны.В случае ошибки устанавливает код ошибки в ldbferrno.

Синтаксис:

void ldbfCloseall(int sock)

Закрывает все открытые таблицы для этого соединения.

Синаксис:

void ldbfSetFilter(char *data,char *filter);

Устанавливает фильтр на таблицу. Фильтр есть любое xBase выражение. Сервер будет выдавать клиенту только те записи, которые удовлетворяют заданному выражению.

Пример:

   /* получить только записи с номерами между 30 и 40 */ 
   data = ldbfOpen(sock,"cust"); 
   ldbfSetFilter(data,"no > 30 .and. no <40"); 
   ldbfTop(data); 
   while(!ldbf_errno==0) { 
     printf("%s %d\n",ldbfValue("cust","name"), 
     ldbfLongValue("cust","no")); 
     ldbfSkip(data,1); 
    }

Синтаксис:

void ldbfBegin()

Данная функция начинает транзакцию. Все изменения, проводимые в дальнейшем, будут накапливаться в журнале транзакции. Если во время транзакции были изменены существующие записи, эти записи будут заблокированы до конца транзакции. Если внутри транзакции происходит обращение к уже измененной записи, использоваться будут новые значения. Остальные пользователи не увидят изменений до тех пор, пока транзакция не завершится. LDBF поддерживает вложенные транзакции. Подтверждение транзакции закрепит все вложенные транзакции, тогда как откат отбросит изменения только последней вложенной транзакции. В случае ошибки устанавливает код ошибки в ldbferrno.

Пример:

 
     ldbfBegin(sock); 
     ldbfAppend(...); 
     ldbfAppend(...);   
     ldbfBegin(sock);  /* вложенная транзакция */ 
     ldbfGo(...); 
     ldbfUpdate(...); 
     if(.......)  /* если условие верно, отбрасываем последнюю транзакцию */ 
         ldbfAbort(sock); 
     ldbfCommit(sock);  /* подтверждаем все транзакции */ 
 

Синтаксис:

void ldbfAbort()

Отбрасывает все изменения, сделанные последней транзакцией.

См. также: ldbfBegin()

Синтаксис:

void ldbfCommit()

Завершает транзакцию и записывает все изменения в базу данных. Все блокировки освобождаются. В случае ошибки устанавливает код ошибки в ldbf_errno.

См. также:ldbfBegin()

Синтаксис:

void ldbfCall(string proc,string param)

Вызывает процедуру базы данных 'proc' с параметрами 'param', результат может быть получен с помощью функции ldbfFetchResult(). В случае ошибки устанавливает код ошибки в ldbf_errno.

Пример:

   ldbfCall("user_find","Jonh"); 
    while(ldbfFetchResutl() != -1) { 
      ldbfLog(Sprintf(%s %d %s\n", ldbfResultTable, ldbfResultRecno,ldbfResultData,3)); 
    }

Синтаксис:

integer ldbfResultCount()

Возвращает количество записей в списке рузультата.

Синтаксис:

void ldbfClearResult()

Очищает список результата.

Синтаксис:

void ldbfFetchResult()

Возвращает очередную запись результата. Значeния помещаются в следующие переменные:

 ldbfResultTable  - имя таблицы, если результат есть запись, иначе пустая строка 
 ldbfResultRecno  - номер записи если результат есть запись 
 ldbfResultLen    - длина поля ldbfResultData 
 ldbfResultData   - содержимое записи или просто данные 
 

Очередной вызов ldbfFetchResult() затирает предыдущие значения переменных.

Синтаксис:

void ldbfRegisterEvent(string event)

С помощью данной функции клиент регистрирует себя как получателя события 'event_name'. Как только данное событие наступит, будет вызвана процедура установленная функцией ldbfEventHandler().

См. также: ldbfRaiseEvent(),ldbfEventHandler()

Синтаксис:

void ldbfRaiseEvent(string event,string data)

Данная функция посылает событие 'event_name' всем, кому оно предназначено. 'data' содержит данные, передаваемые с этим событием.

Пример:

 
   variable time; 
      time = ldbfTimeNow(); 
      /* время в форме hh:mm:ss */ 
      if((time[0] == '2') and (time[1] == '2'))         /* уже 22:00 ? */ 
        ldbfRaiseEvent("alarm","Let's go home, buddy!!!"); 

Функции обработки записей


Синтаксис:

void ldbfAppend(string alias)

Добавляет новую запись в таблицу. Если таблица имеет индексы, то они будут изменены.

Пример:

 ldbfBlank("base"); 
 ldbfReplace("base","name","John"); 
 ldbfReplace("base","post","manager"); 
 ldbfAppend("base");

Синтаксис:

void ldbfRawAppend(string alias,string record_data)

Добавляет новую запись в таблицу. Если таблица имеет индексы, то они будут изменены. Данная функция добавляет запись непосредственно в таблицу,минуя проверку правил,прав и т.д.Программист сам отвечает за правильность содержимого записи.Данная функция выполняется намного быстрее стандартной,поэтому главное ее предназначение в быстром добавлении больших обьемов данных без лишних проверок.Программисту необходимо сфмому сформировать образ записи для данной таблицы.

Пример:

 % таблица имеет 3 поля, NAME C 15;DATE D;ZIP N10
 variable record; 
 record = Sprintf("%15s%8s%10d","Smith","19960222",10,3);
 ldbfRawAppend("base",record);

Синтаксис:

void ldbfBlank(string alias)

Чистит буфер текущей записи. Все поля текущей записи становятся пустыми (в xBase они заполняются пробелами)

Синтаксис:

void ldbfBottom(string alias,string tag)

Устанавливает указатель текущей записи в конец таблицы. В буфер читается содержимое последней записи. Если переменная 'tag' содержит имя индекса, указатель будет установлен на последнюю запись согласно индексному выражению. Возвращает 0 в случае успеха, -1 в случае ошибки.

См. также:ldbfSkip()

Синтаксис:

void ldbfDelete(string alias)

Помечает текущую запись как удаленую.

См. также:ldbfRecall()

Синтаксис:

integer ldbfDeleted(string alias)

Возвращает 1, если текущая запись является помеченной на удаление.

Синтаксис:

void ldbfGo(string alias,integer recno)

Устанавливает указатель текущей записи на запись с номером 'record_number' и читает ее содержимое в локальный буфер.

Синтаксис:

integer ldbfOpen(string alias)

Открывает таблицу. Возвращает номер таблицы в случае успеха или -1 - в случае ошибки.

Пример:

 if(ldbfOpen("names")) { 
   ldbfTop("names","name"); 
    while(not(ldbferrno))) { 
      ...... 
      ldbfSkip("names","name",1); 
    } 
 }

См. также:ldbfClose(),ldbfCloseall()

Синтаксис:

integer ldbfOpenExclu(string alias)

Открывает таблицу в эксклюзивном (однопользовательском) режиме. Возвращает номер таблицы в случае успеха или -1 - в случае ошибки.

См. также:ldbfOpen(), ldbfClose(), ldbfCloseall()

Синтаксис:

integer ldbfOpenTTS(string alias)

Открывает таблицу в э режиме транзакции. При каждом изменении таблицы, данные всегда будут записываться физически на диск, т.е. для данной таблицы не будет использоваться кэширование.Возвращает номер таблицы в случае успеха или -1 - в случае ошибки.

См. также:ldbfOpen(), ldbfClose(), ldbfCloseall()

Синтаксис:

integer ldbfOpenRO(string alias)

Открывает таблицу в режиме только для чтения.Изменения в данной таблице не будут производится. Возвращает номер таблицы в случае успеха или -1 - в случае ошибки.

См. также:ldbfOpen(), ldbfClose(), ldbfCloseall()

Синтаксис:

void ldbfRecall(string alias)

Снимает пометку на удаление записи 'rec'. Если данная запись не помечена как удаленная, то ничего не происходит.

Синтаксис:

long ldbfRecno(DB *data)

Возвращает номер текущей записи в таблице. В случае ошибки возвращает -1.

Синтаксис:

integer ldbfReccount(string alias)

Возвращает количество записей в таблице.В случае ошибки возвращает -1.

Синтаксис:

integer ldbfSeek(string alias,string tag,string data)

integer ldbfFound(string alias,string tag,string data)

ldbfFound() аналогична ldbfSeek(), но указатель текущей записи не изменяется. Прозводит поиск в таблице, используя текущий индекс 'tag'. Если поиск был успешный, найденная запись становится текущей. Если индекс типа Date, 'data' должна содержать значение в формате "CCYYMMDD". Если индексстрокового типа, 'data' может содержать любую строку, заканчивающуюсянулем. Если индекс числовой, 'data' должна содержать только числовые символы. Если запись найдена, возвращает 1.

Пример:

 
  if(ldbfFound("base","name","John")) % проверяем только  
    if(ldbfSeek("base","name","Smith")) % перемещаемся на 
                                                                      % найденную запись 
      ldbfDelete("base");  % удаляем ее 
 

Синтаксис:

void ldbfLocateFirst(string DB, string tag, string begin, string end, string condition)

Функция предназначена для выборки нужных записей в одной таблице. Если установлен текущий индекс, то он будет использоваться. 'begin' определяет начало поиска, в противном случае сканирование производитсяот начала таблицы. Поиск ведется до тех пор, пока выражение 'end' истинно. 'condition' является xBase выражением, в котором можно использовать функции и операторы, допустимые в индексных выражениях. Как только условие 'condition' станет истинным, функция вернет найденную запись. В случае достижения конца таблицы или выражение 'end' ложно, в ldbferrno устанавливается код ошибки.

Следует заметить, что поиск выполняется полностью на сервере, клиенту будет переслана только найденная запись.

Пример:

   % Таблица'codes' имеет следующие  поля: 
   % code  -  код города, 
   % city    -  название города. 
   % Существует индекс по полю 'code'. 
   % Ищем первую запись в диапазоне кодов '044' 
   % на предмет кода, начинающегося на '0443'  
   ldbfLocateFirst("codes","code","044","substr(kod,1,3)='044'", 
             "substr(code,1,4)='0443'");

Синтаксис:

void ldbfLocate(string DB, string tag, string end,string condition)

Аналогична функции ldbfLocateFirst(), но выполняет поиск, начиная со следующей от текущей записи. Если используется индекс, то поиск осуществляется до тех пор, пока выражение 'end' истинно. В противном случае, используется последовательный поиск в таблице 'DB'.

Пример:

   ldbfLocateFirst("codes","code","044","substr(kod,1,3)='044'",
       "substr(code,1,4)='0443'"); 
    while(not(ldbferrno)) { 
     ldbfSkip("codes","code",1); 
     ldbfLocate("codes","code","substr(kod,1,3)='044'", 
          "substr(code,1,4)='0443'"); 
    }

Синтаксис:

void ldbfSkip(string alias,string tag,integer records)

Функция пропускает 'num_records' записей относительно текущей записи. Если установлен индекс 'tag', пропуск идет в последовательности данного индекса. Если 'num_records' больше нуля, пропускаются записи по направлению к концу таблицы, если меньше нуля - к началу. Указатель текущей записи меняется и установленная запись читается в буфер.

В случае ошибки, ldbferrno может содержать:

Пример:

   ldbfTop("base","name"); 
   while(ldbferrno == 0) { 
     ldbfLog(Sprintf("%s %s\n",ldbfValue("base","name"), 
     ldbfValue("base","post"),2)); 
     ldbfSkip("base","name",1); 
   }

Синтаксис:

void ldbfTop(string alias,string tag)

Указатель текущей записи устанавливается в начало таблицы.

Если был установлен текущий индекс 'tag', указатель будет установлен на первую запись согласно индексному выражению. Возвращает -1 в случае ошибки.

См. также:ldbfBottom(), ldbfSkip(), ldbfSeek()

Синтаксис:

void ldbfDrop (string alias)

Удаляет таблицу. Пользователь должен иметь права на эту операцию (см. параметер drop_allow в ldbf.conf). Возвращает -1, если таблица не может быть удалена.

Синтаксис:

void ldbfClose(string alias)

Закрывает таблицу.

Синтаксис:

void ldbfUpdate(string alias)

Обновляет текущую запись в таблице. Данную функцию необходимо вызывать для сохранения результата при изменении значения поля в записи.

Пример:

 if(ldbfSeek("base","name","John")) { 
   ldbfReplace("base","post","programmer"); 
   ldbfUpdate("base"); 
 }

См. также:ldbfAppend()

Синтаксис:

void ldbfRawUpdate(string alias,string record_data)

Обновляет текущую запись в таблице. Данная функция не выполняет никаких проверок на правила,права и т.д.Содержимое записи составляет программист. Низкоуровневая операция,для скоростных изменений.

Пример:

  ldbfRawUpdate("base",Sprintf("%10s%10d","Smith",10,2)); 

См. также:ldbfUpdate()

Синтаксис:

void ldbfInsert(string data,string field_list,string values_list)

Добавляет запись в таблицу. Это аналог функции ldbfAppend() исключением того, что изменения полей и добавление выполнены в одном операторе.

 'data'        - содержит алиас таблицы, 
 'field_list'  - список полей через запятую, 
 'values_list' - список значений через запятую. 
 

Пример:

 
   ldbfInsert("data","name,address,zip","John,New York,12345"); 
   if(ldbferrno)  /* ошибка */ 
     ldbfLog("Ошибка"); 

См. также:ldbfModify(),ldbfCreate(), ldbfAppend()

Синтаксис:

void ldbfModify(string data,string field_list,string values_list)

Изменяет текущую запись. Соответсвует ldbfUpdate(), но делает это в одной функции. Возвращает указатель на открытую таблицу.

Пример:

  ldbfGo("data",1); 
  ldbfModify("data","name,address,zip","John,New York,12345"); 
  ldbfGo("data",2); 
  ldbfModify("data","name,address,zip","Joe,Los angeles,4758");

См. также:ldbfInsert(),ldbfUpdate()

Синтаксис:

void ldbfCreate(string data,string field_list,string tag_list)

Создает новую таблицу.

Формат списка полей:

field list = field_name(type[:len[:dec]]); field_name(type[:len[:dec]])

где:

   field_name  - имя поля, 
   type        - тип (C,D,N,M,L), 
   len         - длина, 
   dec         - кол-во знаков после запятой. 
 

Формат списка индексов:

tag list = tag_name(expression[:filter[:unique[:descending]]]);

где:

     expression  - индексное выражение; 
     filter      - фильтр; 
     unique      - равен 1 если уникальный; 
     descending  - равен 1 если убывающий. 
 

Пример:

   ldbfCreate("data","name(C:25);address(C:50); zip(N:10:1)", 
    "name(name); address(address::1);zip(zip,zip>0:1:1)");

Функции работы с полями


Эти функции работают со значениями полей записи, расположенной в локальном буфере. Изменения посылаются на сервер только функциями работы с записями, такими как ldbfAppend(), ldbfUpdate(), ldbfDelete(). Функции работы с полями только меняют содержимое локального буфера, а также упрощают доступ к полям записи.

Синтаксис:

float ldbfDouble(string alias,string field_name)

float ldbfDoubleValue(string alias,string field_name)

Возвращает значение поля 'field_name' из таблицы 'alias' в виде числа с плавающей точкой.

Синтаксис:

integer ldbfLong(string alias,string field_name)

integer ldbfLongValue( string alias,string field_name)

Возвращает значение поля 'field_name' из таблицы 'alias' в виде длинного целого. Если поле типа дата, возвращается значение даты.

Синтаксис:

integer ldbfEmpty(string alias,string field_name)

Возвращает 1 если поле указанной таблицы 'alias' пустое. Если поле символьное или дата, 1 возвратится в случае если поле содержит одни пробелы,если поле числовое, 1 возвратится если значение поля рвно 0.

Синтаксис:

string ldbfStr(string alias,string field_name)

string ldbfValue(string alias,string field_name)

Возвращает значение поля как строку. Указатель указывает на внутренний статический буфер, последующее обращение к данной функции затирает предыдущее. Если поле типа Date, то результат возвращается в формате, установленном функцией ldbfSetDateFormat().

Пример:

    Неверно: 

 ldbfLog(Sprintf( "Поле 1 %s Поле 2 %s",ldbfStr( ldbfField_j(data,1)), 
      ldbfStr( ldbffField_j(data,2)),2 ));
Правильно: define display_fields(field1,field2) { ldbfLog(Sprintf( " Поле1: ", ldbfStr( field1 ),1)) ; ldbfLog(Sprintf( " Поле2: ", ldbfStr( field2 ),1)); }

Синтаксис:

void ldbfReplace(string alias,string field_name,string data)

Записывает значение из переменной'data' в поле 'field_name' текущей записи в таблице 'alias'. 'data' - хранит строку. Если поле типа Date, то значение в 'ptr' должно быть в формате, установленном функцией ldbfSetDateFormat().

Пример:

ldbfGo("data",1);

ldbfReplace("data","name","Scott Black");

ldbfUpdate("data");

Синтаксис:

void ldbfReplaceLong(string alias,string field_name,integer data)

Записывает значение из переменной 'data' в поле 'field_name' текущей записи в таблице 'alias'. 'data' - хранит значение в виде целого.

Пример:

ldbfReplaceLong("data","zip",12345);

Синтаксис:

void ldbfReplaceDouble(string alias,string field_name,float data)

Записывает значение из переменной 'data' в поле 'field_name' текущей записи в таблице 'alias'. 'data' - хранит значение в виде числа с плавающей точкой.

Пример:

ldbfReplaceDouble("data","money",100.25);

Синтаксис:

void ldbfRecord2Result(string alias)

void ldbfStr2Result(string data)

void ldbfData2Result(string alias,integer recno,string data,integer len)

Эти функции исползуются в процедурах базы данных для возврата результата. ldbfRecord2Result() добавляет запись таблицы 'alias' в список результата, ldbfStr2Result() - любую строку,
а ldbfData2Result() - полностью формирует структуру результата.
Смотрите описание структуры результата в ldbfFetchResult (C-API) и ldbfFetchResult. Список результата будет возвращен по завершению процедуры.

Синтаксис:

void ldbfResult2Record(string alias)

Если текущие значения переменных результата (см. ldbfFetchResult()) запись таблицы alias, то эта запись становится текущей.

Пример:

ldbfCall("get_name","John");

if(ldbfFetchResult) != -1) {

if(not(strcmp(ldbfResultTable,"names")))

ldbfResult2Record("names");

}

Синтаксис:

void ldbfSetRecordContents(string alias,string data)

Записывает содержимое переменной 'data' в буфер текущей записи таблицы 'alias'.Программист полностью сам отвечает за содержимое переменной 'data' и соответсвие ее записи.

Пример:

variable record;

record = Sprintf("%5d%10s%8s",10,"John","19960101");

ldbfSetRecordContents("customer",record);

ldbfAppend("customer");

Синтаксис:

string ldbfGetRecordContents(string alias)

Возвращает содержимое текущей записи из таблицы 'alias'.

Пример:

variable record;

record = ldbfGetRecordContents("base");

record = ldbfLower(record);

ldbfRawUpdate("base",record);

Синтаксис:

void ldbfNewIndex(string db,string path)

Заменяет индексный файл у таблицы 'db' на 'path'. Замена призводится не прерывая работы пользователей. После выполнения данной функции работа с таблицей ведется с использованием нового индексного файла. Полезна при повреждении индексного файла таблицы и если существует архивная копия.

Синтаксис:

integer ldbfReindex(string str)

Переиндексирует таблицу 'str'. Выполняется в фоновом режиме. Таблица открывается в эксклюзивном режиме функцией ldbfOpenExclu().

Синтаксис:

void ldbfLog(string str)

Записывает строку 'str' в файл 'ldbf.log'.

Синтаксис:

void ldbfCopyTable(string from,string to,string condition)

Копирует записи из таблицы 'from' в таблицу 'to' пока верно условие 'condition'.

Пример:

ldbfCopyTable("cust","cust1","no < 100 and salary > 1000");

Синаксис:

void ldbfSetFilter(string data,string filter);

Устанавливает фильтр на таблицу. Фильтр есть любое xBase выражение. Сервер будет выдавать клиенту только те записи, которые удовлетворяют заданному выражению.

Пример:

% получить только записи с номерами между 30 и 40

ldbfSetFilter("cust","no > 30 .and. no < 40");

ldbfTop("cust","");

while(!ldbferrno==0) {

ldbfLog(Sprintf("%s %d\n",ldbfValue("cust","name"),

ldbfLongValue("cust","no"),2));

ldbfSkip("cust","",1);

}